package org.jeecg.modules.music.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.api.vo.artist.ArtistAlbumVo;
import org.jeecg.modules.api.vo.artist.ArtistDetailVo;
import org.jeecg.modules.api.vo.artist.ArtistVo;
import org.jeecg.modules.api.vo.artist.IdentityVo;
import org.jeecg.modules.music.entity.MusArtist;
import org.jeecg.modules.music.entity.MusSong;
import org.jeecg.modules.music.entity.dto.HomeMusCountDto;

import java.util.List;

public interface MusArtistMapper extends BaseMapper<MusArtist> {

    IPage<MusSong> querySongDetailPage(Page<MusSong> page, @Param("artistId") String artistId, @Param("songParams") MusSong songParams);

    ArtistVo queryArtistVoById(@Param("artistId") String artistId);

    ArtistDetailVo queryArtistDetail(@Param("artistId") String id);

    List<IdentityVo> getIdentities(@Param("ids") String[] ids);

    Integer countAlbums(@Param("artistId")String id);

    Integer countSong(@Param("artistId")String id);

    List<ArtistAlbumVo> queryArtistAlbums(@Param("artistId") String id, @Param("limit") Integer limit, @Param("offset") Integer offset);

    List<ArtistDetailVo> querySimiSingers(@Param("artistId") String id,@Param("type") String type);

    List<ArtistDetailVo> queryHotSingers(@Param("offset") Integer offset, @Param("limit") Integer limit);

    List<ArtistDetailVo> querySingersList(@Param("type") Integer type, @Param("area") Integer area, @Param("initial") String initial, @Param("offset") Integer offset, @Param("limit") Integer limit);

    Integer countSingers();

    List<ArtistDetailVo> searchSuggestArtist(@Param("keywords") String keywords);

    List<ArtistDetailVo> searchArtist(@Param("keywords") String keywords, @Param("limit") Integer limit, @Param("offset")Integer offset);

    List<HomeMusCountDto> queryGroupCountry();

    List<HomeMusCountDto> queryGroupSex();

    List<HomeMusCountDto> queryGroupIsEnter();
}
